home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / PROGRAMMING / DESKLIBT / SPRITE.ZIP / !Sprite_!Help next >
Encoding:
Text File  |  1996-08-22  |  1.7 KB  |  20 lines

  1. Help for !Sprite (Part 9 of the Tutorial)
  2. ---------------------------------------
  3.  
  4. !Sprite opens a window that displays a sprite.
  5.  
  6. Breakdown:
  7. ----------
  8. !Sprite is the first program in the tutorial that uses a window displaying something that is not there in the template.  For this reason the dummy refresh routine (Handler_NullRedraw) had to be replaced with a proper one.
  9. This routine is called in function windows_setup(), after an area of memory has been set aside for the sprite. The memory assignment is done by declaring a static char array a bit longer than the sprite length in bytes and assigning a pointer of type sprite_areainfo to the beginning of this memory block.
  10. Then the sprite is loaded with the DeskLib function Sprite_Load().
  11.  
  12. If you experiment around with this and your sprite doesn't appear in the window even though you haven't fiddled with the source code, check that the sprite isn't too long for the memory area assigned to it.  Sprite_Load will only load a sprite if it fits.
  13.  
  14. The redraw routine works as follows (As far as I can make out :)
  15. First the sprite area pointer is cast back from void.
  16. A wimp point is assigned the co-ordinates where the sprite will appear.
  17. The window that has to be redrawn is determined by checking the event block.  Then the co-ordinate block of that window is determined with Window_GetCoords() and stored in a convert block.
  18. Then Wimp_RedrawWindow() is called and sets the variable more.  As long as more is not zero, there is something to redraw still.  This is done in a while loop which plots the sprite in the window using Sprite_WimpPlot and checks if there's anything else to redraw with Wimp_GetRectangle().
  19.  
  20. You might find it interesting to follow what exactly happens in this routine with your debugger...